#ifndef __SER_H__
#define __SER_H__
#include "stdio.h"
#include "conexion.h"


/*
 * Posibles retornos: CLI_CONECTANDO, CLI_DESCONECTANDO, CLI_ERROR, SER_NUEVA_CONEXION, SER_DATOS_ENVIADOS, SER_DATOS_RECIBIDOS
 * CLI_DESCONECTANDO: Este es el ultimo mensaje que recibe el cliente antes de estar desconectado, ya es muy tarde para enviar o recibir datos, solo es para limpieza.
 * CLI_DESCONECTADO: Este es el ultimo mensaje que se recibe de un cliente, en este punto ya no existe el cliente en el servidor.
 */
typedef void(*ser_callback)(int cliente, int codigo, void *data, int size, void *objeto);

int ser_suscribir(ser_callback func, void *o);
int ser_dessuscribir(void *o);
int ser_procesar();

/*
 *
 *
 * Posibles retornos: CLI_CONECTADO, CLI_DESCONECTADO, CLI_CONECTANDO, CLI_DESCONECTANDO, CLI_ERROR
 */
int ser_iniciar(int puerto);
int ser_status_cliente(int cliente, int *codigo);
int ser_status(int *codigo);
int ser_enviar(int cliente, void *data, int size);
int ser_desconectar(int cliente);
int ser_terminar();

int ser_error(char **descripcion);

#endif

